<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
     /* 
    
        计时器 => 每间隔一段时间,执行既定的内容(回调函数)
        setInterval(callback,time,arg1,arg2...argN)   设置/启动计时器
            callback  => 把函数作为参数传入到setInterval中, 让它在setInterval函数中没间隔指定时间执行 (期望执行的内容)  => (回调函数 => 函数可以是命名函数或匿名函数)
            time     => 间隔时间
            arg1,arg2...argN  => 如果传入的回调回调函数需要接受参数,从第三参数开始依次向后传
            返回值: 计时器的编号

        clearInterval(计时器的编号);  对应计时器编号清除计时器
            返回值:undefined 

        注意:
            (1) 计时器启动后,会在页面加载完毕之后开始计时, 之后每间隔指定之间之后开始执行传入的回调函数
            (2) setInterval()启动计时器之后返回计时器的编号(唯一), 后期可以对应计时器编号清除计时器 
            (3) 已经被清除的计时器无法重新启动, 但是可以开启一个新的 => 新的计时器编号
            (4) 再函数封装,事件中启动计时器, 一般情况下,需要保证同时启动一个 ( 先清除上一个 再启动下一个),否则同时启动多个,会无法清除
    
    */


    // 如果传入的回调回调函数需要接受参数,如何处理
    // (1) 从第三参数开始依次向后传
    // (2) 再函数外层包裹一层匿名函数, 再匿名函数中再次调用函数

    // setInterval(function(){   // 每隔1s执行回调函数, 回调函数中调用console.log
    //     console.log(1111,2222,3333);
    // },1000)

    // setInterval(console.log,1000,1111,2222,3333);  // 每隔1s执行console.log



    // countDown("2024/1/1");
    // var timer = setInterval(countDown, 1000,"2024/1/1"); // 每间隔1s在执行一次


    countDown("2024/1/1");
    var timer = setInterval(function(){
        countDown("2024/1/1");
    }, 1000); // 每间隔1s在执行一次

    function countDown(DateStr) { // 传入日期格式的字符串用于指定倒计时结束的时间
        // 页面加载时立即执行
        var now = new Date();
        var future = new Date(DateStr);
        // console.log(future);

        var ms = future - now;
        var time = Math.floor(ms / 1000);


        if (time > 0) {
            var day = Math.floor(time / (24 * 60 * 60));
            var hour = Math.floor(time / (60 * 60)) % 24;  // 不满一天的小时数
            hour = hour < 10 ? "0" + hour : hour;  // 补 0
            var min = Math.floor(time / 60) % 60; //  不满一小时的分钟
            min = min < 10 ? "0" + min : min;
            var sec = time % 60;  //  不满一分钟的秒数
            sec = sec < 10 ? "0" + sec : sec;

            // console.log(day,hour,min,sec);

            // 距离十一放假还有xx天xx小时xx分xx秒

            // var str = "距离十一放假还有" + day + "天" + hour + "小时" +min+"分" + sec + "秒";
            var str = `${day}天${hour}小时${min}分${sec}秒`;
            console.log(str);
        }else{ // time <= 0
            clearInterval(timer);
        }
    }

</script>
</html>